#pragma once

#include "Player.hh"
#include "Level.hh"
#include "DataManager.hh"
#include "Game.hh"

// 主界面类,负责处理游戏界面显示和用户交互
class MainInterface {
    private:
        Player& player_;            // 玩家引用
        Level& level_;              // 关卡引用
        DataManager& dataManager_;  // 数据管理器引用
        Game& game_;               // 游戏引用
    
    public:
        MainInterface(Player& player, Level& level, DataManager& dm , Game& game);
        MainInterface(const MainInterface& other);
        MainInterface& operator=(const MainInterface& other);
        ~MainInterface();
    
        // 界面显示相关函数
        void showLoop();             // 游戏主循环
        void show();                 // 显示游戏状态
        void showMenu();             // 显示主菜单
        void showBag();              // 显示背包内容
        void useItem();              // 使用背包中的道具
        
        // 游戏逻辑相关函数
        void exploreLevelLoop();     // 关卡探索循环
        void movePlayer();           // 处理玩家移动
        void saveCurrentGame(const std::string& path);  // 保存游戏进度
};